//package com.zhangdi.demo.jdbc.factory;
//
//import com.zhangdi.demo.jdbc.impl.BaseRepositoryImpl;
//import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
//import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
//import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
//import org.springframework.data.repository.Repository;
//import org.springframework.data.repository.core.RepositoryInformation;
//import org.springframework.data.repository.core.RepositoryMetadata;
//
//import javax.persistence.EntityManager;
//import java.io.Serializable;
//
///**
// * Created by zhangdi on 2021/01/07 17:32:40.
// */
//public class RepositoryFactoryBean<T extends Repository<S, ID>, S, ID extends Serializable> extends JpaRepositoryFactoryBean<T, S, ID> {
//
//    public RepositoryFactoryBean(Class<? extends T> repositoryInterface) {
//        super(repositoryInterface);
//    }
//
//    public static class RepositoryFactory<S, ID extends Serializable> extends JpaRepositoryFactory {
//        public RepositoryFactory(EntityManager entityManager) {
//            super(entityManager);
//        }
//
//        @Override
//        protected JpaRepositoryImplementation<?, ?> getTargetRepository(RepositoryInformation information, EntityManager entityManager) {
//            return new BaseRepositoryImpl<>(information.getDomainType(), entityManager);
//        }
//
//        @Override
//        protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
//            return BaseRepositoryImpl.class;
//        }
//    }
//}
